type Error native
type Result[OK] union { Error | OK }

public function
    Error { msg String, data List[Pair[String,String]] default(List()) } Error
    native('__Error')

public method
    Error.String String
    native('__ErrorToString')

public operator
    get { err Error, key String } String
    native('__ErrorData')

public operator
    wrap { err Error, f Lambda[String,String] } Error
    native('__ErrorWrap')


